home *** CD-ROM | disk | FTP | other *** search
- #ifndef _H_SPEC_
- #define _H_SPEC_
-
- /** \ingroup rpmbuild
- * \file build/rpmspec.h
- * The Spec and Package data structures used during build.
- */
-
- /** \ingroup rpmbuild
- */
- typedef struct Package_s * Package;
-
- /** \ingroup rpmbuild
- */
- struct TriggerFileEntry {
- int index;
- /*@only@*/ char * fileName;
- /*@only@*/ char * script;
- /*@only@*/ char * prog;
- /*@owned@*/ struct TriggerFileEntry * next;
- };
-
- #define RPMBUILD_ISSOURCE (1 << 0)
- #define RPMBUILD_ISPATCH (1 << 1)
- #define RPMBUILD_ISICON (1 << 2)
- #define RPMBUILD_ISNO (1 << 3)
-
- #define RPMBUILD_DEFAULT_LANG "C"
-
- /** \ingroup rpmbuild
- */
- struct Source {
- /*@owned@*/ char * fullSource;
- /*@dependent@*/ char * source; /* Pointer into fullSource */
- int flags;
- int num;
- /*@owned@*/ struct Source * next;
- };
-
- /** \ingroup rpmbuild
- */
- /*@-typeuse@*/
- typedef struct ReadLevelEntry {
- int reading;
- /*@dependent@*/
- struct ReadLevelEntry * next;
- } RLE_t;
- /*@=typeuse@*/
-
- /** \ingroup rpmbuild
- */
- typedef struct OpenFileInfo {
- /*@only@*/ const char * fileName;
- FD_t fd;
- int lineNum;
- char readBuf[BUFSIZ];
- /*@dependent@*/
- char * readPtr;
- /*@owned@*/
- struct OpenFileInfo * next;
- } OFI_t;
-
- /** \ingroup rpmbuild
- */
- typedef struct spectag_s {
- int t_tag;
- int t_startx;
- int t_nlines;
- /*@only@*/ const char * t_lang;
- /*@only@*/ const char * t_msgid;
- } * spectag;
-
- /** \ingroup rpmbuild
- */
- typedef struct spectags_s {
- /*@owned@*/ spectag st_t;
- int st_nalloc;
- int st_ntags;
- } * spectags;
-
- /** \ingroup rpmbuild
- */
- typedef struct speclines_s {
- /*@only@*/ char **sl_lines;
- int sl_nalloc;
- int sl_nlines;
- } * speclines;
-
- /** \ingroup rpmbuild
- * The structure used to store values parsed from a spec file.
- */
- struct Spec_s {
- /*@only@*/
- const char * specFile; /*!< Name of the spec file. */
- /*@only@*/
- const char * buildRootURL;
- /*@only@*/
- const char * buildSubdir;
- /*@only@*/
- const char * rootURL;
-
- /*@owned@*/ /*@null@*/
- speclines sl;
- /*@owned@*/ /*@null@*/
- spectags st;
-
- /*@owned@*/
- struct OpenFileInfo * fileStack;
- char lbuf[10*BUFSIZ];
- /*@dependent@*/
- char *lbufPtr;
- char nextpeekc;
- /*@dependent@*/
- char * nextline;
- /*@dependent@*/
- char * line;
- int lineNum;
-
- /*@owned@*/
- struct ReadLevelEntry * readStack;
-
- /*@refcounted@*/
- Header buildRestrictions;
- /*@owned@*/ /*@null@*/
- Spec * BASpecs;
- /*@only@*/ /*@null@*/
- const char ** BANames;
- int BACount;
- int recursing; /*!< parse is recursive? */
-
- int force;
- int anyarch;
-
- int gotBuildRootURL;
-
- /*@null@*/
- char * passPhrase;
- int timeCheck;
- /*@null@*/
- const char * cookie;
-
- /*@owned@*/
- struct Source * sources;
- int numSources;
- int noSource;
-
- /*@only@*/
- const char * sourceRpmName;
- /*@only@*/
- unsigned char * sourcePkgId;
- /*@refcounted@*/
- Header sourceHeader;
- /*@refcounted@*/
- rpmfi sourceCpioList;
-
- /*@dependent@*/ /*@null@*/
- MacroContext macros;
-
- /*@only@*/
- StringBuf prep; /*!< %prep scriptlet. */
- /*@only@*/
- StringBuf build; /*!< %build scriptlet. */
- /*@only@*/
- StringBuf install; /*!< %install scriptlet. */
- /*@only@*/
- StringBuf check; /*!< %check scriptlet. */
- /*@only@*/
- StringBuf clean; /*!< %clean scriptlet. */
-
- /*@owned@*/
- Package packages; /*!< Package list. */
- };
-
- /** \ingroup rpmbuild
- * The structure used to store values for a package.
- */
- struct Package_s {
- /*@refcounted@*/
- Header header;
- /*@refcounted@*/
- rpmds ds; /*!< Requires: N = EVR */
- /*@refcounted@*/
- rpmfi cpioList;
-
- /*@owned@*/
- struct Source * icon;
-
- int autoReq;
- int autoProv;
-
- /*@only@*/
- const char * preInFile; /*!< %pre scriptlet. */
- /*@only@*/
- const char * postInFile; /*!< %post scriptlet. */
- /*@only@*/
- const char * preUnFile; /*!< %preun scriptlet. */
- /*@only@*/
- const char * postUnFile; /*!< %postun scriptlet. */
- /*@only@*/
- const char * preTransFile; /*!< %pretrans scriptlet. */
- /*@only@*/
- const char * postTransFile; /*!< %posttrans scriptlet. */
- /*@only@*/
- const char * verifyFile; /*!< %verifyscript scriptlet. */
-
- /*@only@*/
- StringBuf specialDoc;
-
- /*@only@*/
- struct TriggerFileEntry * triggerFiles;
-
- /*@only@*/
- const char * fileFile;
- /*@only@*/
- StringBuf fileList; /* If NULL, package will not be written */
-
- /*@dependent@*/
- Package next;
- };
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /** \ingroup rpmbuild
- * Create and initialize Spec structure.
- * @return spec spec file control structure
- */
- /*@only@*/ Spec newSpec(void)
- /*@globals rpmGlobalMacroContext @*/
- /*@modifies rpmGlobalMacroContext @*/;
-
- /** \ingroup rpmbuild
- * Destroy Spec structure.
- * @param spec spec file control structure
- * @return NULL always
- */
- /*@null@*/ Spec freeSpec(/*@only@*/ /*@null@*/ Spec spec)
- /*@globals fileSystem, internalState @*/
- /*@modifies spec, fileSystem, internalState @*/;
-
- /** \ingroup rpmbuild
- * Function to query spec file(s).
- * @param ts transaction set
- * @param qva parsed query/verify options
- * @param arg query argument
- * @return 0 on success, else no. of failures
- */
- int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg)
- /*@globals rpmGlobalMacroContext, h_errno,
- fileSystem, internalState @*/
- /*@modifies ts, qva, rpmGlobalMacroContext,
- fileSystem, internalState @*/;
-
- /** \ingroup rpmbuild
- */
- struct OpenFileInfo * newOpenFileInfo(void)
- /*@*/;
-
- /** \ingroup rpmbuild
- * @param spec spec file control structure
- * @param h
- * @param tag
- * @param lang
- */
- spectag stashSt(Spec spec, Header h, int tag, const char * lang)
- /*@modifies spec->st @*/;
-
- /** \ingroup rpmbuild
- * @param spec spec file control structure
- * @param pkg package control
- * @param field
- * @param tag
- */
- int addSource(Spec spec, Package pkg, const char * field, int tag)
- /*@globals rpmGlobalMacroContext, h_errno @*/
- /*@modifies spec->sources, spec->numSources,
- spec->st, spec->macros,
- pkg->icon,
- rpmGlobalMacroContext @*/;
-
- /** \ingroup rpmbuild
- * @param spec spec file control structure
- * @param field
- * @param tag
- */
- int parseNoSource(Spec spec, const char * field, int tag)
- /*@modifies nothing @*/;
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* _H_SPEC_ */
-